package com.example.mybatisdemo1.mapper;

import com.example.mybatisdemo1.entity.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.List;

/**
 * @author hyacinth
 * @date 2023/5/11
 */
@Mapper
public interface UserMapper {
     /**
      * 根据用户id查询用户信息
      * @param id
      * @return
      */
    UserInfo getUserById(@Param("id") Integer id);

    /**
     * 查询全部用户
     * @return
     */
    List<UserInfo> getUserAll();

    /**
     * 插入数据
     * @param userInfo
     * @return
     */
    int insertUser(UserInfo userInfo);

    /**
     * 添加并返回用户id
     * @param userInfo
     * @return
     */
    int insertGetId(UserInfo userInfo);

    /**
     * 根据用户名修改数据
     * @param userInfo
     * @return
     */
    int updateByName(UserInfo userInfo);

    /**
     * 根据id删除用户
     * @param id
     * @return
     */
    int deleteById(@Param("id") int id);

    /**
     * #{} 和 ${} 的区别
     * $ 存在SQL注入的问题, #则不岑在
     * # -> 占位符
     * $ 直接替换(预处理)
     * @param order
     * @return
     */
    List<UserInfo> getUserByOrder(@Param("order") String order);

    UserInfo login(@Param("username") String username,@Param("password") String password);

    /**
     * 查询中的 like 问题
     * 能使用$(不安全) 不能使用#
     * concat
     * @param username
     * @return
     */
    List<UserInfo> getUserListByName(@Param("username") String username);

    List<UserInfo> getAllUser();

}
